var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var wechat = require('./routes/wechat');  
var api = require('./routes/api');
var app = express();
const session = require('express-session');
// var MySQLStore = require('express-mysql-session')(session);
// var options = require('./common/basicConnection')
// var sessionStore = new MySQLStore({
//   schema: {
//     tableName: 'custom_sessions_table_name',
//     columnNames: {
//         session_id: 'session_id',
//         expires: 'expires',
//         data: 'usename'
//     }
// }
// },options.pool);
// 模板引擎
app.set('views', path.join(__dirname, 'views'));
app.engine('.html', require('ejs').__express);  
app.set('view engine', 'html'); 

// 使用 session 中间件   cookie来保存sessionID

app.use(session({
  secret: "weird sheep", //对session id 相关的cookie 进行签名
  resave: false, //是否每次都重新保存会话，建议false
  // store: sessionStore,
  saveUninitialized: true, //是否自动保存未初始化的会话，一定是true
  cookie: {user:"default",maxAge: 1000*60*60*24}  // 设置 session 的有效时间，单位毫秒
}));

// app.get('/', function(req, res, next) {
//   var sess = req.session//用这个属性获取session中保存的数据，而且返回的JSON数据
//   if (sess.views) {
//     sess.views++
//     res.setHeader('Content-Type', 'text/html')
//     res.write('<p>欢迎第 ' + sess.views + '次访问       ' + 'expires in:' + (sess.cookie.maxAge / 1000) + 's</p>')
//     res.end();
//   } else {
//     sess.views = 1
//     res.end('welcome to the session demo. refresh!')
//   }
// });

// app.use(function(req,res,next){
//   if(req.session.isLogin){
//     next();
//   }else{
//     var arr = req.url.split('/');
//     console.log(arr)
//     for(var i =0,length = arr.length;i<length;i++){
//       arr[i] = arr[i].split('?')[0]
//     }
//     if(arr.length>=2 &&arr[0]==''&&arr[1]=='login'&&arr[2]=='register'){
//       next()
//     }else{
//       res.redirect("/login"); 
//     }
//   }
// })
// 使用中间件
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
//设置静态资源存放的目录
app.use(express.static(path.join(__dirname, 'public')));

// 定义使用哪些路由文件
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/wechat',wechat);
app.use('/api',api);

// 生产环境错误处理
app.use(function(req, res, next) {
  next(createError(404));
});

// 开发环境错误处理
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // 输出错误页面
  res.status(err.status || 500);
  res.render('error');
});

//输出app对象
module.exports = app;
